﻿using SharpML.Api.Enumerations;
using SharpML.Api.Types;
using System.Configuration;

namespace SharpML.Api.Interfaces
{
    /// <summary>
    /// Root interface for all plugin components
    /// </summary>
    public interface IPluginComponent
    {
        /// <summary>
        /// The name for this component
        /// </summary>
        string Name { get; }

        /// <summary>
        /// The type of plugin component
        /// </summary>
        PluginComponentType Classification { get; }

        /// <summary>
        /// The configuration control
        /// </summary>
        IPluginConfiguration Gui { get; }

        /// <summary>
        /// The settings for this plugin
        /// </summary>
        XmlSerializableDictionary<string,object> Settings { get; set; }
    }
}
